package com.yidu.service;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpSession;

import com.yidu.model.SnAudit;
import com.yidu.model.SnComSaDetail;
import com.yidu.model.SnCommodity;
import com.yidu.model.SuWholesale;

/**
 * 批发订单SERVICE接口
 * @Type SuWholeSaleService
 * @author ZhuYiFan
 * @Date 2018年11月28日
 * @Time 下午1:47:45
 */
public interface SuWholeSaleService {
	
	/**
	 * 查询所有批发订单
	 * @param maps map对象
	 * @return list 批发订单集合
	 */
	List<SuWholesale> findAll(Map<String, Object> maps);
	
	/**
	 * 查询总行数
	 * @param maps map对象
	 * @return 批发订单总行数
	 */
	int findCount(Map<String, Object> maps);
	
	/**
	 * 增加批发订单的方法
	 * @param str 批发明细字符串
	 * @param sum 批发订单总金额
	 * @param session session对象
	 * @return 0 成功 1 失败
	 */
	int add(String str, String sum, HttpSession session);
	
	/**
	 * 根据商品ID和分公司ID查询商品库存
	 * @param comId 商品ID
	 * @param braId 分公司ID
	 * @return 商品库存数量
	 */
	Integer queryInventory(String comId,String braId);

	/**
	 * 条件查询所有批发审核
	 * @param maps maps对象
	 * @return list 批发审核集合
	 */
	List<SnAudit> findWholesale(Map<String, Object> maps);
	
	/**
	 * 条件查询批发审核行数
	 * @param maps maps对象
	 * @return 总行数
	 */
	int findWholesaleCount(Map<String, Object> maps);
	
	/**
	 * 批发审核
	 * @param snAudit 审核对象
	 * @param session session对象
	 * @return 0 审核失败 1 审核成功
	 */
	int auditWholesale(SnAudit snAudit,HttpSession session);
	
	/**
	 * 确认批发的方法
	 * @param whId 销售订单ID
	 * @param session session对象
	 * @return 1 成功 0 失败
	 */
	int confirmWholesale(String whId,HttpSession session);
	
	/**
	 * 条件查询分公司批发的商品
	 * @param maps map对象
	 * @return 分工司商品集合
	 */
	List<SnCommodity> findAllProduction(Map<String, Object> maps);
	
	/**
	 * 查询分公司批发商品的行数
	 * @param maps map对象
	 * @return 分公司商品总行数
	 */
	int findProductionCount(Map<String, Object> maps);
	
	/**
	 * 根据批发订单ID查询库存 
	 * @param whId 批发订单ID
	 * @param session session对象
	 * @return 1 可以批发 0 库存不足
	 */
	int findInventory(String whId,HttpSession session);
	
	/**
	 * 批发退货
	 * @param str 退货详情字符串
	 * @param session session对象
	 * @param whId 批发订单ID
	 * @param result 退货原因
	 * @return 0成功 1 失败
	 */
	int refunds(String str,String whId,String result,HttpSession session);
	
	/**
	 * 查看批发退货审核
	 * @param maps map对象
	 * @return 批发退货审核集合
	 */
	List<SnAudit> findReturn(Map<String, Object> maps);
	
	/**
	 * 查看批发退货审核行数
	 * @param maps map对象
	 * @return 行数
	 */
	int findReturnCount(Map<String, Object> maps);
	
	/**
	 * 根据批发退货订单ID查询批发退货订单明细
	 * @param whId 批发订单ID
	 * @param braId 分公司ID
	 * @return list集合
	 */ 
	List<SnComSaDetail> findReturnDetail(String whId);
	
	/**
	 * 根据批发退货订单ID查询批发退货订单明细总行数
	 * @param whId 批发订单ID
	 * @return 总行数
	 */
	int findReturnDetailCount(String whId);
	
	/**
	 * 批发退货审核
	 * @param snAudit 审核对象
	 * @param session session对象
	 * @return 0成功 1 失败
	 */
	int returnAudit(SnAudit snAudit, HttpSession session);
	
	/**
	 * 根据批发退货订单ID查询退货审核详情
	 * @param whId 批发订单ID
	 * @return list集合
	 */
	List<SnComSaDetail> findAuditDetail(String whId);

	/**
	 * 根据批发退货订单ID查询退货审核详情总行数
	 * @param whId 批发订单ID
	 * @return 总行数
	 */
	int findAuditDetailCount(String whId);

	/**
	 * 根据批发订单ID和分公司ID查询分公司是否能退货
	 * @param whId 批发订单ID
	 * @param session session对象
	 * @return 分公司总金额
	 */
	int findMoney(String whId, HttpSession session);
	
	/**
	 * 确认退货的方法
	 * @param whId 批发订单ID
	 * @param session session对象
	 * @return 1成功 0 失败
	 */
	int returnedPurchase(String whId, HttpSession session);
	
}
